package com.ethan.cj.ssm.dao;

import com.ethan.cj.ssm.dao.provider.CategoryDaoProvider;
import com.ethan.cj.ssm.entity.Category;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 分类管理 dao层接口
 */
@Mapper
@Repository
public interface CategoryDao {

    /**
     * 分页查询
     * @param caname 查询条件 : 分类名称
     * @param offset 分页条件
     * @param limit 分页条件
     * @return 分页管理数据集合
     */
    List<Category> selectCategory(@Param("caname") String caname , @Param("offset") int offset, @Param("limit") int limit);

    /**
     * 获取总条数
     * @param caname 查询条件 : 分类名称
     * @return 总条数
     */
    @SelectProvider(type = CategoryDaoProvider.class, method = "count")
    int count(@Param("caname") String caname);

    /**
     * 新增分类
     * @param category 分类对象
     * @return 影响行数
     */
    @Insert("INSERT INTO `Category` (`catime` ,`caname` , `canum`) VALUES (#{catime} ,#{caname} ,#{canum})")
    int insertCategory(Category category);

    /**
     * 根据id查询分类信息
     * @param caid 查询条件 : id
     * @return 分类对象
     */
    @Select("SELECT * FROM `Category` WHERE `caid` = #{caid}")
    Category selectCategoryById(int caid);

    /**
     * 根据id 删除分类信息
     * @param caid 条件: 分类id
     * @return 影响行数
     */
    @Delete("DELETE FROM `Category` WHERE `caid` = #{caid} ")
    int deleteCategoryById(int caid);

    /**
     * 查询全部分类信息
     * @return 分类集合
     */
    @Select("select * from `category`")
    List<Category> selectCategoryList();
}
